【ネットワークセキュリティ】Google Cloudのネットワーク管理には共有VPCが最適!
共有VPCとは
概要
共有VPCとは、VPCネットワークの管理を1つのホストプロジェクトに一元管理させ、各サブネット内のリソースの管理はそれぞれのサービスプロジェクトに任せる仕組みとなります。
メリットとしては、ネットワーク管理とリソース管理の役割を分けることで、設定ミスによるセキュリティインシデントの軽減やそれぞれの役割に対して責任分担範囲を明確にすることができます。
よって、ネットワーク構成の一貫性を保ちつつ、各サービスプロジェクトの独立性も確保できるため柔軟な運用が可能となります。
ホストプロジェクト
ホストプロジェクトは共有VPCのネットワーク周りのインフラを集中管理する役割を担います。
ここでVPCやサブネットの設定、ファイアウォールルールの管理、ルーティングの制御など、ネットワーク全体の構成と運用を一元的に行い、一貫性のあるネットワークポリシーの適用と効率的な管理が可能となります。
サービスプロジェクト
サービスプロジェクトは、ホストプロジェクトが制御する共有VPCを利用して、権限のあるサブネット内にアプリケーションを展開・運用する役割を担います。
各サービスプロジェクトは、割り当てられたサブネット内でVMインスタンスやその他のリソースを自由に管理できますが、ネットワークの基本設定はホストプロジェクトに依存します。これにより、リソース管理の柔軟性を保ちながら、全体的なネットワークガバナンスを維持することができます。
共有VPCを作成
必要な権限
- 組織管理者
- resourcemanager.organizationAdmin
- プロジェクトの作成/削除、共有VPC管理者を組織に付与するために必要
- 共有VPC管理者
- compute.xpnAdmin と resourcemanager.projectIamAdmin
- ホストプロジェクトの有効化やサービスプロジェクトとホストプロジェクトの接続のために必要
- サービス プロジェクト管理者
- compute.networkUser
- ホストプロジェクト全体または一部のサブネットのいずれかにネットワークユーザーロールを付与することで、サービスプロジェクト管理者として定義可能
※ ちなみに共有VPC管理者やサービス プロジェクト管理者などの単語はIAMロールではなく、共有VPCを利用する際に組織で役割を命名しているだけの仮想的な名前です。実際に権限を付与する場合には英語表記の(compute.~)などを付与してください。
実際の操作
①まずはホストプロジェクトで共有VPCを設定していきます。(ちなみに作成する組織/フォルダに対してCompute Shared VPC 管理者(compute.xpnAdmin)を設定しているため作成が可能となっています)
②共有VPCのコンソールにある[接続されたプロジェクト]からホストプロジェクトに接続するサービスプロジェクトを指定していきます。この操作により、指定したサービスプロジェクトが共有VPC内のサブネットにアクセスすることができます。(①の作成画面から遷移しなければそのまま①の画面で継続して設定可能)
③共有VPCのコンソールにある[サブネットのアクセス権]から、追加したサブネットに対してIAM権限を与えていきます。付与するユーザーにはtest-share-vpc サブネットにCompute ネットワーク ユーザーを割り当てていきます。(これも①の作成画面から遷移しなければそのまま①の画面で継続して設定可能)
④これで、ホストプロジェクト内のVPCにあるサブネットに対して、サービスプロジェクトのユーザーに権限を与えることができました。その後、サービスプロジェクトのVPCネットワークの管理画面で確認することができます。
⑤実際に権限を与えたユーザーが共有VPCのサブネットにCompute Engineを作成できるか確認してみます。(ちなみに、サービスプロジェクト自体に対してもCompute インスタンス管理者 β版などのサブネット以外のリソースを操作するためのロールが必要になります)
上記のように共有ネットワークとして選択できるようになっていることが確認できました。
まとめ
共有VPCを設定した後のネットワークの設計が重要であり、共有VPCを管理するユーザと個々のサブネットを利用するユーザでの意思疎通は必要かと思います。
特に、ファイヤーウォールルールを作成する際には、各アプリケーションの要件に応じて慎重に共有VPCの設定を変更しなければいけません。 また、実際に設定を反映させるためには、検証環境などで通信の可否を確認してからデプロイすることをお勧めします。
ネットワークを一元管理することができるメリットは大きいですが、それに付随するデメリットについても理解することで共有VPCの効果的な活用が可能になります。